home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Source.bin / LightenFilter.java < prev    next >
Text File  |  1998-08-21  |  3KB  |  117 lines

  1. package symantec.itools.awt.image;
  2.  
  3. import java.awt.image.RGBImageFilter;
  4. import java.awt.image.ColorModel;
  5. import java.awt.image.DirectColorModel;
  6. import java.lang.IllegalArgumentException;
  7. import java.util.ResourceBundle;
  8. import java.text.MessageFormat;
  9.  
  10. // Written by Levi Brown and Micheal Hopkins 1.1, July 8, 1997.
  11.  
  12. /**
  13.  * An Image filter to use for lightening an Image a specified percentage.
  14.  * @version 1.1, July 8, 1997
  15.  * @author  Symantec
  16.  */
  17. public class LightenFilter extends RGBImageFilter
  18. {
  19.     /**
  20.      * Constructs a default LightenFilter.
  21.      * By default the Image is lightened 50%.
  22.      * @see LightenFilter#LightenFilter(double)
  23.      * @see #setPercent
  24.      */
  25.     public LightenFilter()
  26.     {
  27.         this(0.50);
  28.     }
  29.  
  30.     /**
  31.      * Constructs a LightenFilter.
  32.      * @param percent the percent to lighten the image when filtering.
  33.      * @see LightenFilter#LightenFilter()
  34.      * @see #setPercent
  35.      */
  36.     public LightenFilter(double percent)
  37.     {
  38.         errors = ResourceBundle.getBundle("symantec.itools.resources.ErrorsBundle");
  39.         canFilterIndexColorModel = true;
  40.         try
  41.         {
  42.             setPercent(percent);
  43.         }
  44.         catch (IllegalArgumentException exc)
  45.         {
  46.             Object[] args = { new Double(percent) };
  47.             System.err.println("LightenFilter: " + errors.getString("InvalidPercent1"));
  48.             System.err.println("     " + errors.getString("InvalidPercent2"));
  49.             System.err.println("     " + errors.getString("InvalidPercent3"));
  50.             try { setPercent(0.50); } catch (IllegalArgumentException exc2) {}
  51.         }
  52.     }
  53.  
  54.     /**
  55.      * Sets the percentage to fade when filtering.
  56.      * @param percent the percentage to fade
  57.      * @exception IllegalArgumentException
  58.      * if the specified percentage value is unacceptable
  59.      * @see #getPercent
  60.      */
  61.     public void setPercent(double percent) throws IllegalArgumentException
  62.     {
  63.         symantec.itools.util.GeneralUtils.checkValidPercent(percent);
  64.  
  65.         this.percent = percent;
  66.     }
  67.  
  68.     /**
  69.      * Gets the percentage to fade when filtering.
  70.      * @return the percentage to fade
  71.      * @see #setPercent
  72.      */
  73.     public double getPercent()
  74.     {
  75.         return percent;
  76.     }
  77.  
  78.     /**
  79.      * Filters an RGB value by the current lighten percentage.
  80.      * @param x unused
  81.      * @param y unused
  82.      * @param rgb the rgb value to lighten
  83.      * @return the lightened rgb value
  84.      */
  85.     public int filterRGB( int x, int y, int rgb )
  86.     {
  87.         DirectColorModel cm = (DirectColorModel)ColorModel.getRGBdefault();
  88.  
  89.         int alpha = cm.getAlpha(rgb);
  90.         int red   = cm.getRed(rgb);
  91.         int green = cm.getGreen(rgb);
  92.         int blue  = cm.getBlue(rgb);
  93.  
  94.         red        += (int)((255 - red)    * percent );
  95.         green    += (int)((255 - green)    * percent );
  96.         blue    += (int)((255 - blue)    * percent );
  97.  
  98.         alpha    = alpha << 24;
  99.         red        = red   << 16;
  100.         green    = green << 8;
  101.  
  102.         return alpha | red | green | blue;
  103.     }
  104.  
  105.     /**
  106.      * The percentage to lighen when filtering.
  107.      * @see #getPercent
  108.      * @see #setPercent
  109.      */
  110.     protected double percent;
  111.  
  112.     /**
  113.      * Error strings.
  114.      */
  115.     transient protected ResourceBundle errors;
  116. }
  117.